/**
 * 表达式接口
 * @author liaosh
 * @date 2022-10-22 21:11
 */
public abstract class Expression {
    /**
     * 解析方法
     * @param playContext
     */
    public void interpret(PlayContext playContext) {
        String text = playContext.getPlayText();
        if (text.length() > 0) {
            String playKey = text.substring(0, 1);
            text = text.substring(2);
            double playValue = Double.parseDouble(text.substring(0, text.indexOf(" ")));
            playContext.setPlayText(text.substring(text.indexOf(" ") + 1));
            // 解析完成，调用子类的执行器
            execute(playKey, playValue);
        }
    }

    /**
     * 解释器执行
     * 不同的方法子类，有不同的执行处理
     * @param key
     * @param value
     */
    public abstract void execute(String key, double value);
}
